package com.lvtulife.paas.gtd.service;

import com.lvtulife.common.bean.DelVo;
import com.lvtulife.common.component.easyui.Tree;
import com.lvtulife.common.service.BaseServiceI;
import com.lvtulife.paas.gtd.bean.AimTrunkVo;
import com.lvtulife.paas.gtd.entity.GtdAimTrunk;

import java.util.List;

/**
 * GtdAimTrunk 表数据服务层接口
 */
public interface GtdAimTrunkServiceI extends BaseServiceI<GtdAimTrunk> {

    /**
     * 保存主干目标
     *
     * @param vo
     * @return
     */
    Long saveTrunkAim(AimTrunkVo vo);

    /**
     * 主干目标排序
     *
     * @param id
     * @param sort
     */
    void sortTrunkAim(Long id, Integer sort);

    /**
     * 设置上级主干目标
     *
     * @param id
     * @param parentId
     */
    void setParentTrunkAim(Long id, Long parentId);

    /**
     * 目标单位划分
     *
     * @param id
     * @param partUnit
     * @param partValue
     */
    void setPartTrunkAim(Long id, Integer partUnit, Integer partValue);

    /**
     * 删除主干目标
     *
     * @param vo
     */
    void delTrunkAim(DelVo vo);

    /**
     * 查询单位主干目标
     *
     * @param userId
     * @param partUnit
     * @param partValue
     * @return
     */
    List<AimTrunkVo> findPartTrunkAims(Long userId, Integer partUnit, Integer partValue);

    /**
     * 查询子类主干目标
     *
     * @param pid
     * @return
     */
    List<AimTrunkVo> findSonTrunkAims(Long pid);

    /**
     * 查询目标类别下的主干目标
     *
     * @param userId
     * @param typeId
     * @return
     */
    List<AimTrunkVo> findTypeTrunkAims(Long userId, Long typeId);

    /**
     * 模糊查询主干目标
     *
     * @param userId
     * @param likeStr
     * @return
     */
    List<AimTrunkVo> findLikeTrunkAims(Long userId, String likeStr);

    /**
     * 获取主干目标
     *
     * @param id
     * @return
     */
    AimTrunkVo getTrunkAim(Long id);

    /**
     * 获取主干目标,包含子项
     *
     * @param id
     * @return
     */
    List<AimTrunkVo> getFullTrunkAims(Long id);

    /**
     * 获取主干目标树
     *
     * @param id
     * @return
     */
    Tree getTreeTrunkAims(Long id);

}